//  const a = require('./main.js');
// 拿到数据放到空白文件中
const fs = require('fs');
const path = require('path');
//导入 express
const express = require('express');
//创建 应用对象
const app = express();
app.use(express.json({ limit: '3mb' }));
app.use(express.urlencoded({ extended: true }))
    //创建路由规则 见3、4
    //利用 app.listen(端口号、回调函数)；监听端口  启动服务器
app.listen(8003, () => {
    console.log('express server running at http://127.0.0.1')
})
app.all('*', function(req, res, next) {
    // 允许跨域
    res.header("Access-Control-Allow-Origin", "*");
    // 允许携带自定义请求头信息
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    // 支持接收的请求类型
    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
    res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild');
    res.header("X-Powered-By", ' 3.2.1')
    res.header("Content-Type", "application/json;charset=utf-8");
    next();
});
app.post('/api', function(reqest, response) {
    /*处理函数*/
    var datas = JSON.stringify(reqest.body)
    var name = reqest.body.mydata.name;
    var passwords = reqest.body.mydata.password;
    var pathurl = path.join(__dirname, `${name}.json`);
    fs.writeFile(pathurl, datas, function(err) {
        if (err == null) {
            console.log('写入成功');
            return;
        }
        console.log(err);
        response.send('no');
    });
    // 写入用户表
    var userpath = path.join(__dirname, `user.json`);
    fs.readFile(userpath, 'utf-8', function(err, dataStr) {
        if (err == null) {
            console.log('读取用户列表成功'); //当接收到的err 为 null 时，表示文件读取成功；
            var data = dataStr == null ? [] : JSON.parse(dataStr);
            var i = data.findIndex((item) => {
                return item.name == name;
            })
            if (i == -1) {
                data[data.length] = {
                    name,
                    password: passwords,
                };
            } else {
                data[i].password = passwords;
            }
            data = JSON.stringify(data);
            fs.writeFile(userpath, data, function(err) {
                if (err == null) {
                    console.log('用户写入成功');
                    return;
                }
                console.log(err);
            })
        } else {
            console.log(err);
            response.send('no');
        }
    });
    response.send('ok');
})

app.post('/data', function(reqest, response) {
    /*处理函数*/
    var namer = reqest.body.name
    var password = reqest.body.password;
    var pathurl = path.join(__dirname, `user.json`)
    fs.readFile(pathurl, 'utf-8', function(err, dataStr) {
        if (err == null) {
            console.log('读取文件成功'); //当接收到的err 为 null 时，表示文件读取成功；
            var data = JSON.parse(dataStr);
            var index = data.findIndex((i) => {
                return i.name == namer;
            })
            if (index != -1 && password == data[index].password) {
                var namerurl = path.join(__dirname, `${namer}.json`)
                fs.readFile(namerurl, 'utf-8', function(err, dataStr) {
                    if (err == null) {
                        console.log('读取用户文件成功'); //当接收到的err 为 null 时，表示文件读取成功；
                        var datas = JSON.parse(dataStr);
                        response.send(datas);
                        return;
                    }
                })
            } else {
                response.send('no');
            }
        } else {
            response.send('no');
        }

    })
})


app.post('/adimin', function(reqest, response) {
    /*处理函数*/
    var userpath = path.join(__dirname, `user.json`);
    fs.readFile(userpath, 'utf-8', function(err, dataStr) {
        if (err == null) {
            console.log('读取用户表成功'); //当接收到的err 为 null 时，表示文件读取成功；
            response.send(dataStr);
            return;
        }
        console.log(err);
        response.send('no');
    });
})

app.post('/chang', function(reqest, response) {
    uersdata = JSON.stringify(reqest.body)
    var userpath = path.join(__dirname, `user.json`);
    fs.writeFile(userpath, uersdata, function(err) {
        if (err == null) {
            console.log('用户写入成功');
            response.send('ok')
            return;
        }
        console.log(err);
        response.send('no')
    })
});

app.post('/remove', function(reqest, response) {
    username = reqest.body[0];
    var userpath = path.join(__dirname, `${username}.json`);
    fs.unlink(userpath, function(err) {
        if (err == null) {
            console.log(`删除${username}成功`);
            response.send('ok')
            return;
        }
        console.log(err);
    })
});


// 说明
//   - /data   用户登录判断-读取并返回数据
//   - /api    用户注册-信息写入文件    追加用户列表的数据
//   - /adimin  返回列表用户信息
//   - /chang   重写用户信息数据
//   - /remove  删除对应用户的文件 接收名字即可